import request from '@/utils/request'

/**
 * @typedef Template
 * @property {number} [data.mode]
 * @property {string} [data.appName]
 * @property {string} [data.appPackageName]
 * @property {number} [data.fileType]
 * @property {number} [data.creUserId]
 * @property {string} [data.creUsername]
 */

/**
 * @typedef Layout
 * @property {string} paramId
 * @property {string} label
 * @property {string} key
 * @property {number} maxLength
 * @property {number} nullable
 * @property {number} valueType
 * @property {string} refTableSchemaId
 * @property {Object[]} defaultValues
 * @property {string} description
 * @property {string} paramLayoutId
 * @property {number} x
 * @property {number} y
 * @property {number} w
 * @property {number} h
 * @property {string} title
 * @property {number} type 1-STRING 2-BOOLEAN 3-NUMBER 4-HEX 5-REFERENCE 6-FILE
 * @property {Object[]} paramValues
 */

/**
 * @typedef Component
 * @property {string} data.category
 * @property {string} data.key
 * @property {string} data.label
 * @property {number} data.maxLength
 * @property {number} data.nullable - 是否可为空 0 可以为空 1 不能为空
 * @property {string} data.valueType
 */

/**
 * @desc 获取特定模式的通用参数模板列表
 */

export function getSpecificModeTemplateList(mode) {
  return request({
    url: `/online/management/fly-parameter/template/common/mode/${mode}/list`
  })
}

/**
 * @desc 新增一条Profile表的Entry记录
 * @param {string} templateId templateId
 * @param {string} tableId tableId
 * @param {string} rowUniqueKey
 * @param {boolean} IsTerminal
 */
export function addProfileEntry({
  templateId,
  tableId,
  rowUniqueKey,
  isTerminal,
  sourceTableId,
  sourceEntityId,
  sourceParamId
}) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/entity`,
    method: 'POST',
    data: {
      rowUniqueKey,
      isTerminal,
      sourceTableId,
      sourceEntityId,
      sourceParamId
    }
  })
}

/**
 * @desc 导入参数组件
 */

export function importParameterComponent(file, duplicateHandleMethod) {
  return request({
    url: `/online/management/fly-parameter/component/import`,
    method: 'POST',
    data: file,
    params: {
      duplicateHandleMethod
    }
  })
}

export function exportParameterComponentTpl() {
  return request({
    url: `/online/management/fly-parameter/component/export/tpl`,
    responseType: 'blob'
  })
}

/**
 * @desc 导出参数组件
 */

export function exportParameterComponent(componentIds) {
  return request({
    url: `/online/management/fly-parameter/component/export`,
    method: 'POST',
    data: { componentIds: componentIds },
    responseType: 'blob',
    timeout: 1000 * 60 * 10
  })
}

/**
 * @desc 导出表的数据（终端）
 * @param {string} templateId
 * @param {string} tableId
 */
export function exportTerminalTableData(
  templateId,
  tableId,
  rowUniqueKeyLike,
  extralColumns
) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/export/data`,
    method: 'POST',
    params: {
      rowUniqueKeyLike
    },
    data: {
      extralColumns: extralColumns
    },
    responseType: 'blob',
    timeout: 1000 * 60 * 10
  })
}

/**
 * @desc 导入表的数据（终端）
 * @param {string} templateId
 * @param {string} tableId
 */
export function importTerminalTableData(
  templateId,
  tableId,
  file,
  duplicateHandleMethod
) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/import/data`,
    method: 'POST',
    params: {
      duplicateHandleMethod
    },
    data: file
  })
}

/**
 * @desc 导出表的数据(refTable)
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} rowUniqueKeyLike
 */

export function exportRefTableData(templateId, tableId, rowUniqueKeyLike) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/ref-table/${tableId}/export/data`,
    params: {
      rowUniqueKeyLike
    },
    responseType: 'blob',
    timeout: 1000 * 60 * 10
  })
}

/**
 * @desc 导入表的数据(refTable)
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} rowUniqueKeyLike
 */

export function importRefTableData(
  templateId,
  tableId,
  file,
  duplicateHandleMethod
) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/ref-table/${tableId}/import/data`,
    method: 'POST',
    data: file,
    params: {
      duplicateHandleMethod
    }
  })
}

/**
 * @desc 跑批
 * @param {string} templateId
 */
export function runBatch(templateId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/full-publish`,
    method: 'POST'
  })
}

/**
 * @desc 分页查询Profile表的Entry记录
 * @param {string} templateId
 * @param {string} tableId
 * @param {Object} params
 * @param {number} [params.pageNo] 页码
 * @param {number} [params.pageSize] 每页的记录数
 * @param {string} [params.rowUniqueKeyLike]
 */
export function getProfileEntryList(templateId, tableId, params) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/entity/terminal-page`,
    params
  })
}

/**
 * @desc 分页查询Profile表的Entry记录
 * @param {string} templateId
 * @param {string} tableId
 * @param {Object} params
 * @param {number} [params.pageNo] 页码
 * @param {number} [params.pageSize] 每页的记录数
 * @param {string} [params.rowUniqueKeyLike]
 */

export function getRefTableEntryList(templateId, tableId, params) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/ref-table/${tableId}/entity/terminal-page`,
    params
  })
}

/**
 * @desc 获取Profile表的Entry记录的参数最终值
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} entityId
 */
export function getProfileEntryRealValue(templateId, tableId, entityId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/entity/${entityId}/param-real-value/list`
  })
}

/**
 * @desc 获取Profile表的Entry记录的参数最终值
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} entityId
 */
export function getRefTableEntryRealValue(templateId, tableId, entityId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/ref-table/${tableId}/entity/${entityId}/param-real-value/list`
  })
}

/**
 * @desc 复制一条Profile表的Entry记录
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} entityId
 * @param {Object} data
 * @param {string} data.rowUniqueKey
 */

export function copyProfileEntry(templateId, tableId, entityId, data) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/entity/${entityId}/copy`,
    method: 'POST',
    data: {
      isTerminal: true,
      rowUniqueKey: data.rowUniqueKey
    }
  })
}

/**
 * @desc 复制一条Reference表的Entry记录
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} entityId
 * @param {Object} data
 * @param {string} data.rowUniqueKey
 */

export function copyReferenceEntry(templateId, tableId, entityId, data) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/ref-table/${tableId}/entity/${entityId}/copy`,
    method: 'POST',
    data: {
      rowUniqueKey: data.rowUniqueKey
    }
  })
}

/**
 * @desc 删除一条Profile表的Entry记录
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} entityId

 */

export function deleteProfileEntry(templateId, tableId, entityId, data) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/entity/${entityId}`,
    method: 'DELETE'
  })
}

/**
 * @desc 下载终端的参数配置文件
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} entityId
 */

export function downloadParameterConfigFile(templateId, tableId, entityId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/entity/${entityId}/terminal-cfg-file/download`
  })
}

/**
 * @desc 下载表的excel导入模板
 * @param {string} templateId
 * @param {string} tableId
 */
export function downloadExcelImportTemplate(templateId, tableId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/ref-table/${tableId}/export/tpl`,
    responseType: 'blob',
    timeout: 1000 * 60 * 10
  })
}

/**
 * @desc 下载表的excel导入模板(terminal-table)
 * @param {string} templateId
 * @param {string} tableId
 */
export function downloadTerminalExcelImportTemplate(templateId, tableId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/export/tpl`,
    responseType: 'blob',
    timeout: 1000 * 60 * 10
  })
}

/**
 * @desc 导出一个应用的参数模板的定义和数据
 * @param {string} templateId
 * @param {[string]} tableSchemaIds
 */

export function exportParameterTemplateStructureAndData(
  templateId,
  tableSchemaIds
) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/design/export/structure-data`,
    params: { tableSchemaIds: tableSchemaIds + '' }
  })
}

/**
 * @desc 导出一个应用的参数模板的数据
 * @param {string} templateId
 * @param {[string]} tableSchemaIds
 */

export function exportParameterTemplateData(
  templateId,
  tableSchemaIds,
  rowUniqueKeyLike
) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/design/export/data`,
    params: { tableSchemaIds: tableSchemaIds + '', rowUniqueKeyLike }
  })
}

/**
 * @desc 导出一个应用的参数模板的定义
 */

export function exportParameterTemplateStructure(templateId, tableSchemaIds) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/design/export/structure`,
    params: { tableSchemaIds: tableSchemaIds + '' }
  })
}

export function addCommonParamTemplate(mode, data) {
  return request({
    url: `/online/management/fly-parameter/template/common/user/mode/${mode}`,
    data,
    method: 'POST'
  })
}

export function importWholeParamTemplate(params, data) {
  return request({
    url: `/online/management/fly-parameter/template/design/import/whole`,
    data,
    method: 'POST',
    params: params,
    timeout: 1000 * 60 * 10
  })
}

/**
 * @desc  导入一个应用的参数模板的数据
 * @param {string} templateId
 * @param {File} file
 */

export function importParamterTemplateData(
  templateId,
  data,
  duplicateHandleMethod
) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/design/import/data`,
    data,
    method: 'POST',
    params: {
      duplicateHandleMethod
    }
  })
}

/**
 * @desc 导入一个应用的参数模板的定义
 * @param {string} templateId
 * @param {Object} data
 * @param {number} tableExistHandleMethod
 * @param {File} [data.file]
 */

export function importParamterTemplateStructure(
  templateId,
  data,
  tableExistHandleMethod
) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/design/import/structure`,
    method: 'POST',
    data,
    params: {
      tableExistHandleMethod
    }
  })
}

/**
 * @desc 导入一个应用的参数模板的定义和数据
 * @param {string} templateId
 * @param {File} file
 */

export function importParamterTemplateDataAndStructure(
  templateId,
  data,
  duplicateHandleMethod,
  tableExistHandleMethod
) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/design/import/structure-data`,
    method: 'POST',
    data,
    params: {
      duplicateHandleMethod,
      tableExistHandleMethod
    }
  })
}

/**
 * @desc 获取终端参数配置文件的数据来预览展示
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} entityId
 */
export function getTerminalParameterTemplatePreview(
  templateId,
  tableId,
  entityId
) {
  return request({})
}

/**
 * @desc 查询Profile表的Entry记录列表
 * @param {Object} data 参数data
 * @param {string} data.templateId templateId
 * @param {string} data.tableId tableId
 */

// export function getProfileEntryList({ templateId = '', tableId = '' } = {}) {
//   return request({
//     url: `/online/management/fly-parameter/template/${templateId}/terminal-table/svg${tableId}/entity/list`
//   })
// }

/**
 * @desc 分页查询应用参数模板列表
 * @param {Object} params
 * @param {number} [params.pageNo] 页码
 * @param {number} [params.pageSize] 每页的记录数
 * @param {string} [params.appNameLike]
 * @returns
 */

export function getTemplateList(params) {
  return request({
    url: `/online/management/fly-parameter/template`,
    params
  })
}

/**
 * @desc 创建一个应用的参数模板（通过选择空白模板）
 * @param {Template} data
 */
export function createBlankTemplate(data) {
  return request({
    url: `/online/management/fly-parameter/template`,
    method: 'POST',
    data
  })
}

/**
 * @desc 创建一个应用的参数模板 (通过选择通用模板)
 * @param {Template} data 对象
 * @param {string} commonTemplateId 通用模版Id
 */
export function createTemplateByTemplateId(data, commonTemplateId) {
  return request({
    url: `/online/management/fly-parameter/template/common/${commonTemplateId}`,
    method: 'POST',
    data: data
  })
}

/**
 * @desc 创建一个应用的参数模板（通过导入文件的方式）
 * @param {string} appName
 * @param {string} appPackageName
 * @param {string} mode
 */

export function createTemplateByFile(appName, appPackageName, mode, file) {
  return request({
    url: `/online/management/fly-parameter/template/design/import/whole`,
    method: 'POST',
    params: {
      appName,
      appPackageName,
      mode
    },
    data: file
  })
}

/**
 * @desc 删除一个应用的参数模板
 * @param {string} templateId 模板id
 */

export function deleteTemplateByTemplateId(templateId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}`,
    method: 'DELETE'
  })
}

/**
 * @desc 更新一个应用的参数模板信息
 */
export function updateTemplate(templateId, data) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}`,
    method: 'POST',
    data
  })
}

/**
 * 重置参数模板
 * @param templateId
 * @returns {AxiosPromise}
 */
export function resetTemplate(templateId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/reset`,
    method: 'POST'
  })
}

/**
 * @desc 获取Basic类别的参数组件列表
 */

export function getBasicComponent() {
  return request({
    url: `/online/management/fly-parameter/component/module-basic/list`
  })
}

/**
 * @desc 获取Common类别的参数组件列表
 */
export function getCommonComponentList() {
  return request({
    url: `/online/management/fly-parameter/component/module-common/list`
  })
}

/**
 * @desc 更新一个参数组件的信息
 * @param {string} componentId 组件ID
 * @param {Component} data
 */

export function updateCommonComponent(componentId, data) {
  return request({
    url: `/online/management/fly-parameter/component/${componentId}`,
    method: 'POST',
    data
  })
}

/**
 * @desc 添加一个参数组件
 * @param {Component} data
 */

export function saveCommonComponent(data) {
  return request({
    url: `/online/management/fly-parameter/component`,
    method: 'POST',
    data
  })
}

/**
 * @desc 删除一个参数组件
 * @param {string} componentId 组件ID
 */

export function deleteCommonComponent(componentId) {
  return request({
    url: `/online/management/fly-parameter/component/${componentId}`,
    method: 'DELETE'
  })
}

export function queryComponentCategorySet(params) {
  return request({
    url: `/online/management/fly-parameter/component/category/list`,
    params
  })
}

/**
 * @desc 获取一个应用的参数模板信息
 * @param {string} templateId 模版Id
 */
export function getParameterTemplateInfo(templateId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}`
  })
}

/**
 * @desc  获取一个应用的参数模板信息 (按应用包名)
 * @param {string} appPackageName 应用包名
 */

export function getParameterTemplateInfoByPackageName(appPackageName) {
  return request({
    url: `/online/management/fly-parameter/template/app/package-name`,
    params: {
      appPackageName
    }
  })
}

/**
 * @desc 获取一个应用的参数模板的参数配置文件预览数据
 * @param {string} templateId
 * @param {number} fileType
 * @returns
 */

export function getParameterTemplatePreview(templateId, fileType) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-cfg-file/preview`,
    params: {
      fileType
    }
  })
}

/**
 * 预览终端当前发布文件的数据
 * @param templateId
 * @param tableId
 * @param entityId
 */
export function getProfileEntryPreview(templateId, tableId, entityId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/entity/${entityId}/terminal-cfg-file/preview`
  })
}

/**
 *  @desc 为一个应用的参数模板新增一个表
 *  @param {Object} data
 *  @param {string} templateId
 */

export function createNewTable(data, templateId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/design/table`,
    method: 'POST',
    data
  })
}

/**
 * @desc 获取应用的参数模板内的表列表
 * @param {string} templateId
 */

export function getTemplateTableList(templateId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/design/table/list`
  })
}

/**
 * @desc 获取一个表的表单布局及参数定义列表
 * @param {string} templateId
 * @param {string} tableId
 * @return {Promise<Layout[]>}
 */

export function getTemplateTableLayoutList(templateId, tableId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/design/table/${tableId}/layout/list`
  })
}

/**
 * @desc 获取应用的参数模板内的被某表关联的表列表
 * @param {string} templateId
 * @param {string} tableId
 * @param {number} tableType
 */

export function getTableRelatedList(templateId, tableId, tableType) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/design/table/${tableId}/related-list`,
    params: {
      tableType
    }
  })
}

/**
 * @desc 保存应用的参数模板的设计配置
 * @param {string} templateId - templateId
 * @param {Object} data
 * @param {string} data.tableId
 * @param {Object[]} data.parameters
 */

export function saveTemplateLayout(templateId, data) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/design`,
    method: 'POST',
    data
  })
}

/**
 * @desc 保存Reference表的Entry记录的参数配置
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} entityId
 * @param {Object[]} data
 * @param {string} data.paramId
 * @param {string} data.paramValues
 */

export function saveReferenceLayoutConfig({
  templateId = '',
  tableId = '',
  entityId = '',
  data
} = {}) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/ref-table/${tableId}/entity/${entityId}/param-value`,
    method: 'POST',
    data
  })
}

/**
 * @desc 保存Profile表的Entry记录的参数配置(单台终端的多tab页配置保存)
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} entityId
 * @param {Object} data
 * @param {string} data.sourceTableId
 * @param {string} data.sourceEntityName
 * @param {string} data.sourceParamId
 * @param {string} data.tableId
 * @param {Object[]} data.paramValueUpdateDtos
 */
export function saveMultipleProfileEntryLayout(
  templateId,
  tableId,
  devSn,
  jobUuid,
  data
) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/device/${devSn}/multi-tab/param-value`,
    method: 'POST',
    data,
    params: {
      jobUuid
    }
  })
}

/**
 * @desc 获取Profile表的Entry记录的参数布局和配置
 * @param {Object} data 上传的对象
 * @param {string} data.templateId 模版Id
 * @param {string} data.tableId tableId
 * @param {string} data.entityId entityId
 */
export function getEntryLayoutConfig(templateId, tableId, entityId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/entity/${entityId}/param-value/list`
  })
}

/**
 * @desc 新增一条Reference表的Entry记录
 * @param {string} templateId
 * @param {string} tableId
 * @param {Object} data
 * @param {string} data.rowUniqueKey
 */

export function createRefTableEntry(templateId, tableId, data) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/ref-table/${tableId}/entity`,
    method: 'POST',
    data
  })
}

/**
 * @desc 新增一条Reference表的Entry记录
 * @param {string} templateId
 * @param {string} tableId
 * @param {Object} data
 * @param {string} data.rowUniqueKey
 */

export function createTerminalEntry(templateId, tableId, data) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/entity`,
    method: 'POST',
    data
  })
}

/**
 * @desc 新增一条select(label-value)表的Entry记录
 * @param {string} templateId
 * @param {string} tableId
 * @param {Object} data
 * @param {string} data
 */

export function createLabelValueEntry(templateId, tableId, data) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/select-lable-value-table/${tableId}/entity`,
    method: 'POST',
    data
  })
}

/**
 * @desc 根据Entry名称查找Entry记录
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} entryName
 * @returns
 */

export function getEntryByName(templateId, tableId, entryName) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/ref-table/${tableId}/entity/${entryName}`
  })
}

/**
 * @desc 根据Entry名称查找Entry记录
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} entryName
 * @returns
 */

export function getTerminalEntryByName(templateId, tableId, entryName) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/entity/${entryName}`
  })
}

/**
 * @desc 获取Reference表的Entry记录的参数布局和配置
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} entityId
 * @returns
 */

export function getLayoutConfigFromReferenceTable(
  templateId,
  tableId,
  entityId
) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/ref-table/${tableId}/entity/${entityId}/param-value/list`
  })
}

/**
 * @desc 获取参数可引用的的表列表
 * @param {string} templateId
 * @param {string} tableId
 */

export function getReferenceTable(templateId, tableId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/design/table/${tableId}/reference/table/list`
  })
}

/**
 * @desc 分页查询Reference表的Entry记录
 * @param {string} templateId
 * @param {string} tableId
 * @param {Object} params
 * @param {number} [params.pageNo] 页码
 * @param {number} [params.pageSize] 每页的记录数
 */

export function getReferenceEntryRecord(templateId, tableId, params) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/ref-table/${tableId}/entity`,
    params
  })
}

/**
 * @desc 分页查询Terminal表的Entry记录
 * @param {string} templateId
 * @param {string} tableId
 * @param {Object} params
 * @param {number} [params.pageNo] 页码
 * @param {number} [params.pageSize] 每页的记录数
 * @param {number} [params.paramNum]
 */

export function getReferenceTerminalTableRecord(templateId, tableId, params) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/entity`,
    params
  })
}

// 保存Profile表的Entry记录的参数配置
export function saveEntryLayoutConfig(templateId, tableId, entityId, data) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/entity/${entityId}/param-value`,
    method: 'POST',
    data
  })
}

/**
 * @desc 删除表
 * @param {string} templateId
 * @param {string} tableId
 */

export function deleteTable(templateId, tableId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/design/table/${tableId}`,
    method: 'DELETE'
  })
}

/**
 * @desc 更新表的基本信息
 * @param {string} templateId
 * @param {string} tableId
 * @param {Object} data
 * @param {string} data.tableName
 */

export function updateTable(templateId, tableId, data) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/design/table/${tableId}`,
    method: 'POST',
    data
  })
}

/**
 * @desc 删除一条Reference表的Entry记录
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} entityId
 */

export function deleteEntry(templateId, tableId, entityId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/ref-table/${tableId}/entity/${entityId}`,
    method: 'DELETE'
  })
}

// =================== 参数文件相关 ==============================

/**
 * @desc  获取运营商下的所有文件路径
 */
export function queryAllSubPathsByRoot() {
  return request({
    url: `/online/management/fly-parameter/resource/paths`
  })
}

/**
 * @desc 查询某一节点下的直接子路径列表和文件列表
 * @param {string} pathId
 */

export function querySubsByParentPath(pathId) {
  return request({
    url: `/online/management/fly-parameter/resource/paths/${pathId}/subs`
  })
}

export function queryAllSubsByRoot(params) {
  return request({
    url: '/online/management/fly-parameter/resource/paths-and-attachs',
    params
  })
}

export function querySubPathsByParent(params) {
  return request({
    url: '/online/management/fly-parameter/resource/paths/' + params.pathId,
    params
  })
}

export function createDir(params) {
  return request({
    url: '/online/management/fly-parameter/resource/paths/' + params.pathId,
    method: 'post',
    params
  })
}

export function downloadFile(params) {
  return request({
    url:
      '/online/management/fly-parameter/resource/paths/' +
      params.pathId +
      '/attaches/' +
      params.attachId,
    method: 'get',
    params
  })
}

export function deleteObj(params) {
  return request({
    url: '/online/management/fly-parameter/resource/paths/' + params.pathId,
    method: 'delete',
    data: params.list
  })
}

export function findAllParentByPathId(params) {
  return request({
    url:
      '/online/management/fly-parameter/resource/paths/' +
      params.pathId +
      '/routes',
    method: 'get',
    params
  })
}

/**
 *
 * @param {string} templateId
 * @param {string} tableId
 * @param {Object} data
 * @param {string} [data.tableId]
 * @param {Object} [data.entityCondition]
 * @param {number} [data.entityCondition.conditionConnector]
 * @param {string} [data.entityCondition.conditionKey]
 * @param {string} [data.entityCondition.conditionMatcher]
 * @param {string} [data.entityCondition.conditionValue]
 * @param {Array} [data.paramConditions]
 * @param {number} [data.operationType]
 * @param {Array} [data.operations]
 * @param {boolean} [data.dryRun]
 * @param {Array} [data.orgIds]
 * @returns
 */

export function dryrun(templateId, tableId, data) {
  return request({
    method: 'POST',
    url: `/online/management/fly-parameter/template/${templateId}/terminal-table/${tableId}/entity/dryrun`,
    data
  })
}

/**
 *
 * @param {string} templateId
 * @param {string} tableId
 * @param {Object} data
 * @param {string} [data.tableId]
 * @param {Object} [data.entityCondition]
 * @param {number} [data.entityCondition.conditionConnector]
 * @param {string} [data.entityCondition.conditionKey]
 * @param {string} [data.entityCondition.conditionMatcher]
 * @param {string} [data.entityCondition.conditionValue]
 * @param {Array} [data.paramConditions]
 * @param {number} [data.operationType]
 * @param {Array} [data.operations]
 * @param {boolean} [data.dryRun]
 * @param {Array} [data.orgIds]
 * @returns
 */

export function refTableDryrun(templateId, tableId, data) {
  return request({
    method: 'POST',
    url: `/online/management/fly-parameter/template/${templateId}/ref-table/${tableId}/entity/dryrun`,
    data
  })
}

export function queryPublishProgress(templateId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/publish-progress`
  })
}

export function queryReleaseFileUsageStatistics(templateId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/release-file/statistics`
  })
}

// 权限控制相关

/**
 * @desc  为参数设置权限控制
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} paramId
 * @param {Object} data
 * @param {string} [data.userId]
 * @param {string} [data.userName]
 */

export function setAuthorityControl(templateId, tableId, paramId, data) {
  return request({
    url: `/online/management/fly-parameter/param-permission/template/${templateId}/table/${tableId}/param/${paramId}/user/control`,
    method: 'POST',
    data
  })
}

/**
 * @desc 查询参数在当前机构内用户的权限分配情况
 * @param {string} templateId
 * @param {string} tableId
 * @param {string} paramId,
 * @param {string} username

 */

export function getParameterAuthority(templateId, tableId, paramId, username) {
  return request({
    url: `/online/management/fly-parameter/param-permission/template/${templateId}/table/${tableId}/param/${paramId}/user/control`,
    params: { username }
  })
}

/**
 * @desc 获取所有用户
 */

export function getUsers(username) {
  return request({
    url: `/online/management/fly-parameter/param-permission/users`,
    params: { username }
  })
}

/**
 * @desc 获取任务列表
 * @param params
 * @returns {AxiosPromise}
 */
export function getTask(params) {
  return request({
    url: '/online/task-processing-center/task',
    method: 'get',
    params
  })
}

/**
 * @desc 查询有层级结构的profile类型表的参数集
 */
export function getNestedProfileParameters(templateId) {
  return request({
    url: `/online/management/fly-parameter/template/${templateId}/nest-params/list`
  })
}

/**
 * 按文件目录名搜索文件路径
 * @param {string} folderName
 */
export function queryPathListByCondition(folderName) {
  return request({
    url: `/online/management/fly-parameter/resource/paths`,
    params: {
      folderName
    }
  })
}

/**
 * 查询从起始节点到某个节点的递级关系
 * @param pathId
 */
export function queryDirectoryPath(pathId) {
  return request({
    url: `/online/management/fly-parameter/resource/paths/${pathId}/routes`
  })
}

export function getAdminParameterTemplates(params) {
  return request({
    url: '/online/management/admin/flyparameter/template',
    params
  })
}

export function deleteAdminParameterTemplate(templateId) {
  return request({
    method: 'DELETE',
    url: `/online/management/admin/flyparameter/template/${templateId}`
  })
}

export function addAdminParameterTemplate(data) {
  return request({
    url: '/online/management/admin/flyparameter/template',
    method: 'POST',
    data
  })
}
